#include "mtlib.c"
#include <stdio.h>

void enviar(void);
void recibir(void);

unsigned char centro1, centro2;
unsigned int conexion1, conexion2, conexion3;

int main(void) {
  mti_mensaje mensaje;
  centro1 = mtf_obtener_descriptor(1024);
  centro2 = mtf_obtener_descriptor(1024);
  conexion3 = mtf_conectar(centro1, MTP_UNIX_ESCUCHA, "/root/socket13.tmp");
  conexion2 = mtf_conectar(centro2, MTP_UNIX, "/root/socket13.tmp");
  while(!mtf_recibir_mensajes(centro1));
  mensaje = mtf_siguiente_mensaje(centro1);
  conexion1 = mensaje.remitente;
  mtf_descartar_mensaje(centro1, mensaje.codigo);
  enviar();
  recibir();
  return 0;
}

void enviar(void) {
  char * buffer;
  int posicion;
  buffer = malloc(26);
  for (posicion = 0; posicion < 26; posicion ++) buffer[posicion] = 64 + posicion;
  mtf_enviar_mensaje(centro1, conexion1, MTR_DATOS_ARCHIVO, (long long) 123, (long) 456, (int) 26, (void *) buffer);
}

void recibir(void) {
  char * buffer;
  unsigned short tamBuffer;
  mti_mensaje mensaje;
  while (!mtf_recibir_mensajes(centro2));
  mensaje = mtf_siguiente_mensaje(centro2);
  buffer = NULL;
  mtf_obtener_datos(centro2, mensaje.codigo, NULL, NULL, (unsigned short int *) &tamBuffer, (char **) &buffer);
  printf("Tamaño datos: %hu, datos: %26.26s\n", tamBuffer, buffer);
  mtf_descartar_mensaje(centro2, mensaje.codigo);
}